package cn.iocoder.yudao.module.system.dal.mysql.sms;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.enums.SqlConstants;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
import cn.iocoder.yudao.module.system.api.sms.dto.code.SmsCodePageReqDTO;
import cn.iocoder.yudao.module.system.dal.dataobject.sms.SmsCodeDO;
import org.apache.ibatis.annotations.Mapper;

import java.util.Arrays;

@Mapper
public interface SmsCodeMapper extends BaseMapperX<SmsCodeDO> {

    /**
     * 获得手机号的最后一个手机验证码
     *
     * @param mobile 手机号
     * @param scene 发送场景，选填
     * @param code 验证码 选填
     * @return 手机验证码
     */
    default SmsCodeDO selectLastByMobile(String mobile, String code, Integer scene) {
        return selectOne(new QueryWrapperX<SmsCodeDO>()
                .eq("mobile", mobile).eqIfPresent("scene", scene).eqIfPresent("code", code)
                .orderByDesc("id").last(SqlConstants.LIMIT1));
    }


    default PageResult<SmsCodeDO> selectPage(SmsCodePageReqDTO reqVO) {
        return selectPage(reqVO, new QueryWrapperX<SmsCodeDO>()
                .likeIfPresent("mobile", reqVO.getMobile())
                .ne("tenant_id",0)
                .isNotNull("creator")
                .orderByDesc("id"));
    }

}
